"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/10/31 8:39
@Description : 类中的魔术方法

魔术方法:  方法不需要手动调用，在对象处在不同的场景时 自动触发的方法
__init__()
"""


class Aoo:
    # 对象初始化方法   创建对象是自动调用
    def __init__(self, num, info):
        self.num = num
        self.info = info
        print('Aoo init()被调用')

    # str  对象的字符串标识形式
    def __str__(self):
        print('Aoo str()被调用')
        return f"num={self.num}, info={self.info}"

    # 判定对象是否相等  eq
    def __eq__(self, other):
        print('Aoo eq()被调用')
        return self.num == other.num and self.info == other.info

    # >
    def __gt__(self, other):
        print('Aoo gt() 被调用')
        return self.num > other.num

    # <
    def __lt__(self, other):
        print('Aoo lt() 被调用')
        return self.num < other.num

    # hash   对象可被hash
    def __hash__(self):
        print('Aoo hash() 被调用')
        return hash(self.num)

    # 创建Aoo的实例


aoo = Aoo(6, 'hello')
# 打印aoo
print(aoo)

aoo2 = Aoo(5, 'hello')
# 比较两个对象  地址
print(aoo == aoo2)
print(aoo > aoo2)
print(aoo < aoo2)

# hash   TypeError: unhashable type: 'Aoo'
print(hash(aoo))
